#include <WinSock2.h>
#include <Ws2tcpip.h>
#include "iostream"
#include "SocketAddress.h"


namespace CustomSocket
{
	SocketAddress::SocketAddress(UINT16 port, const std::string ipv4)
	{
		auto sockAddrIn = GetSockAddrIn();
		memset(sockAddrIn->sin_zero, 0, sizeof(sockAddrIn->sin_zero));
		sockAddrIn->sin_family = AF_INET;
		sockAddrIn->sin_port = htons(port);
		inet_pton(AF_INET, ipv4.c_str(), &(sockAddrIn->sin_addr));
	}

	SocketAddress::SocketAddress(const sockaddr* inSockAddr)
	{
		memcpy(&(this->mSockAddr), inSockAddr, sizeof(inSockAddr));
	}

	sockaddr_in* SocketAddress::GetSockAddrIn() 
	{
		return reinterpret_cast<sockaddr_in*>(&(this->mSockAddr));
	}

	sockaddr* SocketAddress::GetSockAddr() const
	{
		auto tempAddr = this->mSockAddr;
		return &(tempAddr);
	}

	size_t SocketAddress::GetSize()
	{
		return sizeof(this->mSockAddr);
	}
}
